package com.dorado.example.model;

import com.dorado.kernel.base.model.BaseModel;
import com.dorado.kernel.base.serializer.Long2String;
import com.dorado.kernel.base.serializer.String2Long;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import lombok.Data;
import lombok.ToString;

@Data
@ToString
@Table(name = "jm_company")
public class Company extends BaseModel {
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    /**
     * 公司名
     */
    @Column(name = "name")
    private String name;

    /**
     * 没用
     */
    @Column(name = "pid")
    private Integer pid;

    /**
     * 创建时间
     */
    @Column(name = "mktime")
    private Date mktime;

    /**
     * 修改时间
     */
    @Column(name = "updated")
    private Date updated;

    /**
     * 所属哪个用户
     */
    @Column(name = "uid")
    private Integer uid;

    /**
     * 状态 0待审 1正常 2失败，3禁用 4 未认证 5 临时认证(company表中没有实际的5，在userShipper表中的state为4时为临时认证)
     */
    @Column(name = "state")
    private Byte state;

    /**
     * 法人姓名
     */
    @Column(name = "law_realname")
    private String lawRealname;

    /**
     * 法人身份证号码
     */
    @Column(name = "law_id_code")
    private String lawIdCode;

    /**
     * 法人手机号
     */
    @Column(name = "law_phone")
    private String lawPhone;

    /**
     * 法人身份证正面
     */
    @Column(name = "law_pic_main")
    private String lawPicMain;

    /**
     * 法人身份证反面
     */
    @Column(name = "law_pic_other")
    private String lawPicOther;

    /**
     * 法人证件有效截止时间
     */
    @Column(name = "law_valid_date")
    private Date lawValidDate;

    /**
     * 法人证件是否过期(1：未过期。2：即将过期。3：已过期)
     */
    @Column(name = "law_valid_expired_status")
    private Byte lawValidExpiredStatus;

    /**
     * 营业执照编号
     */
    @Column(name = "bl_code")
    private String blCode;

    /**
     * 公司类型 1总公司2分公司
     */
    @Column(name = "company_type")
    private Byte companyType;

    /**
     * 公司地址
     */
    @Column(name = "company_address")
    private String companyAddress;

    /**
     * 合同编号
     */
    @Column(name = "contract_number")
    private String contractNumber;

    /**
     * 合同公司
     */
    @Column(name = "contract_company")
    private String contractCompany;

    /**
     * 合同结束时间
     */
    @Column(name = "contract_end_date")
    private Date contractEndDate;

    /**
     * 营业执照照片
     */
    @Column(name = "bl_pic")
    private String blPic;

    /**
     * 公司余额
     */
    @Column(name = "account")
    private BigDecimal account;

    /**
     * 锁定余额
     */
    @Column(name = "lock_account")
    private BigDecimal lockAccount;

    /**
     * 银联绑定账号id 作废
     */
    @Column(name = "unionbank_id")
    private String unionbankId;

    /**
     * 银联结算户 作废
     */
    @Column(name = "walletnum")
    private String walletnum;

    /**
     * 作废
     */
    @Column(name = "walletnum_state")
    private String walletnumState;

    /**
     * 银行卡号
     */
    @Column(name = "bankcode")
    private String bankcode;

    /**
     * 网商账户号
     */
    @Column(name = "kekeing_sub_account_no")
    private String kekeingSubAccountNo;

    /**
     * 网商账户名
     */
    @Column(name = "kekeing_account_name")
    private String kekeingAccountName;

    /**
     * 网商银行卡号
     */
    @Column(name = "kekeing_pay_sub_account_no")
    private String kekeingPaySubAccountNo;

    /**
     * 邀请人
     */
    @Column(name = "invitePhone")
    private String invitePhone;

    /**
     * 省份code
     */
    @Column(name = "province_code")
    private String provinceCode;

    /**
     * 市级code
     */
    @Column(name = "city_code")
    private String cityCode;

    /**
     * 公司代码
     */
    @Column(name = "company_code")
    private String companyCode;

    /**
     * 快捷订单业务公司代码
     */
    @Column(name = "quick_business_company_code")
    private String quickBusinessCompanyCode;

    /**
     * 线上业务公司代码
     */
    @Column(name = "online_business_company_code")
    private String onlineBusinessCompanyCode;

    /**
     * 快捷订单业务公司名称
     */
    @Column(name = "quick_business_company_name")
    private String quickBusinessCompanyName;

    /**
     * 线上业务公司名称
     */
    @Column(name = "online_business_company_name")
    private String onlineBusinessCompanyName;

    /**
     * 省份名称
     */
    @Column(name = "province_name")
    private String provinceName;

    /**
     * 市名称
     */
    @Column(name = "city_name")
    private String cityName;

    /**
     * 认证类型 0 未知 1个人认证 2 企业认证
     */
    @Column(name = "auth_type")
    private Byte authType;

    /**
     * 认证时间
     */
    @Column(name = "auth_time")
    private Date authTime;

    /**
     * 认证通过时间
     */
    @Column(name = "auth_pass_time")
    private Date authPassTime;

    /**
     * 个人银行卡
     */
    @Column(name = "personal_bank_card")
    private String personalBankCard;

    /**
     *  是否是聚盟成员 1不是 2 是
     */
    @Column(name = "is_jumeng_member")
    private Byte isJumengMember;

    /**
     * 二级平台
     */
    @Column(name = "second_platform")
    private String secondPlatform;

    /**
     * 所属地区-区编码
     */
    @Column(name = "area_code")
    private String areaCode;

    /**
     * 所属地区-区名称
     */
    @Column(name = "area_name")
    private String areaName;

    /**
     * 常用订单类型 1整车2零担3全部
     */
    @Column(name = "tendency_order_type")
    private Byte tendencyOrderType;

    /**
     * 是否上链：0 NO， 1 yes
     */
    @Column(name = "dis_status")
    private Boolean disStatus;

    /**
     * 商户ID
     */
    @Column(name = "merchant_id")
    @JsonSerialize(using=Long2String.class)
    @JsonDeserialize(using=String2Long.class)
    private Long merchantId;

    /**
     * 云资金启用状态:1未启用 2已启用 3已禁用
     */
    @Column(name = "cloud_capital_state")
    private Byte cloudCapitalState;

    /**
     *  审核失败原因 
     */
    @Column(name = "audit_fail_reason")
    private String auditFailReason;

    /**
     * 发货性质 10 专线 20 三方物流 30 个体 40 信息部
     */
    @Column(name = "delivery_nature")
    private Byte deliveryNature;

    /**
     * 客商编码
     */
    @Column(name = "cus_code")
    private String cusCode;

    /**
     * 三要素校验状态 0=未查询, 1=三要素一致, 2=手机号已实名，但是身份证和姓名均与实名信息不一致，3=手机号已实名，手机号和证件号一致，姓名不一致, 4= 手机号已实名，手机号和姓名一致，身份证不一致, -1=异常情况
     */
    @Column(name = "three_elements_state")
    private String threeElementsState;

    /**
     * 补充资料
     */
    @Column(name = "additional_materials")
    private String additionalMaterials;

    /**
     * 最后下单时间
     */
    @Column(name = "last_order_time")
    private Date lastOrderTime;
}